package com.example.yurpceasy.register;

import com.example.yurpceasy.config.RegistryConfig;
import com.example.yurpceasy.model.ServiceMetaInfo;

import java.util.List;

public interface Registry {

    /**
     * 初始化
     *
     * @param registerConfig
     */
    void init(RegistryConfig registerConfig);

    /**
     * 注册服务（服务端）
     *
     * @param serviceMetaInfo
     */
    void register(ServiceMetaInfo serviceMetaInfo) throws Exception;

    /**
     * 销毁服务（服务端）
     *
     * @param serviceMetaInfo
     */
    void unRegistry(ServiceMetaInfo serviceMetaInfo);

    /**
     * 发现服务（消费端）
     *
     * @param serviceKey
     * @return
     */
    List<ServiceMetaInfo> serviceDiscovery(String serviceKey);

    /**
     * 销毁服务
     */
    void destroy();

    /**
     * 心跳检测 （服务端）
     */
    void heartBeat();

    /**
     * 监听 （消费端）
     * @param serviceNodeKey
     */
    void watch(String serviceNodeKey);
}
